﻿Public Class ucCadastroParticularidade
    Dim objBLL As New BLLPaSala
    Dim filtro, tam As Integer
    Public codigo As Integer
    Dim DiaSemana As Integer = Date.Now.DayOfWeek
#Region "Voltar"
    Private Sub tsbVoltar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbVoltar.Click
        fMenu.TCPrincipal.SelectedIndex = 2
        fMenu.TCPrincipal_Click(sender, e)
    End Sub
#End Region
#Region "Localizar"
    Private Sub tsbLocalizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbLocalizar.Click
        If pFiltro.Visible = True Then
            pFiltro.Visible = False
            tsbLocalizar.CheckState = 0
        Else
            pFiltro.Visible = True
            tsbLocalizar.CheckState = 1
        End If
    End Sub


#End Region
#Region "Novo"
    Private Sub tsbNovo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbNovo.Click
        frmParticularidade.tipo = "Novo"
        frmParticularidade.ShowDialog()
    End Sub
#End Region
#Region "Métodos"
    Public Sub Atualiza()
        'Aqui defini O modo inicial do Meu Formulario
        'Automáticamente o ComboBox vai Iniciar  no Indice 2(Nome)
        cbDiaSemana.SelectedIndex = DiaSemana
        cbFiltro.SelectedIndex = 1
        'Meu DataGridView vai Receber Todos os Resultados Do Metodo (LocalizaTudo)
        dgParticularidade.DataSource = objBLL.Localizartudo("")
        'Mando Minha Label Receber a Quantidade de Registros Encontrados
        tam = dgParticularidade.RowCount.ToString()
        ' lbContador.Text = dgParticularidade.RowCount.ToString() & " Solicitantes Cadastrados."
        dgParticularidade.Columns(0).HeaderText = "Código"
        'Defino o Tamanho da Coluna do DataGridView
        dgParticularidade.Columns(0).Width = 70
        dgParticularidade.Columns(1).HeaderText = "Sala"
        dgParticularidade.Columns(1).Width = 70
        dgParticularidade.Columns(2).HeaderText = "Sala descrição"
        dgParticularidade.Columns(2).Width = 150
        dgParticularidade.Columns(3).HeaderText = "Hora início"
        dgParticularidade.Columns(3).Width = 130
        dgParticularidade.Columns(4).HeaderText = "Hora final"
        dgParticularidade.Columns(4).Width = 130
        dgParticularidade.Columns(5).HeaderText = "Dia"
        dgParticularidade.Columns(5).Width = 130
        dgParticularidade.Columns(6).HeaderText = "Detalhes"
        dgParticularidade.Columns(6).Width = 250
        dgParticularidade.Columns(7).Visible = False
        dgParticularidade.Columns(8).Visible = False
  
    End Sub
#End Region
    Private Sub ucCadastroParticularidade_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Carrega o DataGridView
        'Limpa os Campos
        'Formata As colunas
        Atualiza()
    End Sub
#Region "ComboBoxFiltro"
    Private Sub cbFiltro_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles cbFiltro.KeyPress
        e.Handled = True
    End Sub
    Private Sub cbFiltro_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbFiltro.SelectedIndexChanged
        Select Case cbFiltro.SelectedIndex
            Case 1
                cbDiaSemana.SelectedIndex = DiaSemana
                cbDiaSemana.DropDownStyle = ComboBoxStyle.DropDown
            Case Else
                cbDiaSemana.SelectedIndex = -1
                cbDiaSemana.Text = ""
                cbDiaSemana.DropDownStyle = Nothing
        End Select


    End Sub

#End Region
#Region "ComboBox Dia Semana"
    Private Sub cbDiaSemana_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles cbDiaSemana.KeyPress
        If cbDiaSemana.SelectedIndex = 1 Then
            e.Handled = True
        End If
        If cbFiltro.SelectedIndex = 0 Then
            'Não deixo o Usuário Digitar Letras so Números
            'e Tambem libero para ele Poder Apagar o(s) Números
            If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack Then
                e.Handled = True
            End If
        End If
    End Sub
    Private Sub cbDiaSemana_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbDiaSemana.TextChanged
        Dim ret As Boolean
        Select Case cbFiltro.SelectedIndex
            Case 0
                filtro = 0
                If Trim(cbDiaSemana.Text) <> "" Then
                    ret = True
                Else
                    ret = False
                End If
            Case 1
                filtro = 5
                If Trim(cbDiaSemana.Text) <> "" And Trim(cbDiaSemana.Text) <> "Todos" Then
                    ret = True
                Else
                    ret = False
                End If
            Case 2
                filtro = 2
                If Trim(cbDiaSemana.Text) <> "" Then
                    ret = True
                Else
                    ret = False
                End If
        End Select
        Dim texto As String = Nothing
        'Primeiro Percorre todo o datagrid
        For Each linha As DataGridViewRow In dgParticularidade.Rows
            'depois percorro todas as colunas da linha
            For Each celula As DataGridViewCell In dgParticularidade.Rows(linha.Index).Cells
                'seleciono qual coluna qeu vou comparar
                If ret = True Then
                    If celula.ColumnIndex = filtro Then
                        'Gravo o Valor que existe Naquela Coluna
                        texto = celula.Value.ToString.ToLower
                        'Se o que esta na coluna contem algo com o que eu escrevi no TextBox
                        If texto = (cbDiaSemana.Text.ToLower) And filtro <> 2 Then
                            'Entao seleciona a linha para mim
                            Me.dgParticularidade.Rows(celula.RowIndex).Visible = True
                        ElseIf texto.Contains(cbDiaSemana.Text.ToLower) And filtro = 2 Then
                            Me.dgParticularidade.Rows(celula.RowIndex).Visible = True
                        Else
                            'Else Desmarca a linha
                            dgParticularidade.CurrentCell = Nothing
                            Me.dgParticularidade.Rows(celula.RowIndex).Visible = False
                        End If
                    End If
                Else
                    'Else campo estiver Vazio
                    Me.dgParticularidade.Rows(celula.RowIndex).Visible = True
                End If
            Next
        Next
    End Sub


#End Region

  
    Private Sub tsbAlterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbAlterar.Click
        Dim indice As Integer = -1
        Try
            For Each linha As DataGridViewRow In dgParticularidade.SelectedRows
                If (Not linha.Cells("par_codigo") Is Nothing) Then
                    indice = linha.Index
                End If
            Next
            If (indice <> -1) Then
                codigo = dgParticularidade.Rows(indice).Cells("par_codigo").Value.ToString()
                frmParticularidade.tipo = "Alterar"
                frmParticularidade.Codigo = codigo
                frmParticularidade.ShowDialog()
            Else
                MsgBox("Selecione Particularidade a ser realizado alteração", MsgBoxStyle.Information)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        Finally
        End Try
    End Sub

    Private Sub tsbExcluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbExcluir.Click
        Try
            Dim cod As Integer = 0
            Dim nome As String
            Dim indice As Integer = -1
            'Percorre O DataGridView Verificando a Linha selecionada
            For Each linha As DataGridViewRow In dgParticularidade.SelectedRows
                If (Not linha.Cells("par_codigo") Is Nothing) Then
                    'Guarda A Posição Selecionada
                    indice = linha.Index
                End If
            Next
            If (indice <> -1) Then
                nome = dgParticularidade.Rows(indice).Cells("sal_descricao").Value.ToString()
                If MessageBox.Show("Confirma Exclusão da particularidade do " & nome & " ?", "", MessageBoxButtons.YesNo) = vbYes Then
                    cod = dgParticularidade.Rows(indice).Cells("par_codigo").Value.ToString()
                    objBLL.excluir(cod)
                    MsgBox("Particularidade " & nome & " Excluida com sucesso", MsgBoxStyle.OkOnly)
                    Atualiza()
                End If
            Else
                MsgBox("Selecione Particularidade a ser Excluida", MsgBoxStyle.Information)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
End Class
